var http = require('http')
var fs = require('fs')
var path = require('path')
var mime = require('mime')
var chatServer = require('./lib/chat_server')
var cache = {}


// 
function send404 (response) {
    response.writeHead(404, {'Content-type': 'text/plain'})
    response.write('Error 404: resource not found')
    response.end()
}
function sendFile (response, filePath, fileContents) {
    response.writeHead(200, {'Content-type': mime.getType(path.basename(filePath))})
    response.end(fileContents)
}
// 创建静态服务器
function serverStatic (response, chache, absPath) {
    if (cache[absPath]) {
        sendFile(response, absPath, cache[absPath])
    } else {
        fs.exists(absPath, function (exists) {
            if (exists) {
                fs.readFile(absPath, function (err, data) {
                    if (err) {
                        send404(response)
                    } else {
                        cache[absPath] = data
                        sendFile(response, absPath, data)
                    }
                })
            } else {
                send404(response)
            }
        })
    }
}
// 创建http服务器
var server = http.createServer(function (request, response) {
    var filePath = false;
    if (request.url == '/') {
        filePath = 'public/index.html'
    } else {
        filePath = 'public' + request.url;
    }
    var absPath = './' + filePath
    serverStatic(response, cache, absPath)
})

server.listen(3000, function () {
    console.log('server listening on port 3000')
})

chatServer.listen(server)